﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using SoftHotel.Models;
using System.Data;
using System.Data.Entity;
using PagedList;

namespace SoftHotel.Controllers
{
    public class ConsumoController : Controller
    {

        static List<Consumo> busquedacon = new List<Consumo>();
        ConsumoDAO ma = new ConsumoDAO();
        private SedeDAO sedeDao = new SedeDAO();
        private ServicioDAO servicioDAO = new ServicioDAO();
        private ClienteDAO cliDAO = new ClienteDAO();
        private ReservaHabDAO reservaHabDAO = new ReservaHabDAO();
        private ReservaEvDAO reservaEvDAO = new ReservaEvDAO();
        private AmbienteDAO ambienteDAO = new AmbienteDAO();
        private ListaPreciosDAO listaPreciosDAO = new ListaPreciosDAO();

        public ActionResult Index()
        {
            return View();
        }

        [HttpPost]
        public ActionResult Index(Consumo consumo, string button) //recibe la acción del botón de la pagina de inicio
        {
            if (button == "Buscar")
                return RedirectToAction("Buscar", consumo); //Model de Buscar es IEnumerable (*)
            return RedirectToAction(button, "Consumo");
        }

        public ActionResult Buscar(Consumo consumo)
        {
            List<Consumo> consumos = new List<Consumo>();
            consumos = ma.Buscar(consumo);
            return View(consumos);
        }

        [HttpPost]
        public ActionResult Buscar(string button, Consumo consumo)
        {
            try
            {
                if (button == "Editar")
                {
                    return RedirectToAction("Editar", "Consumo");
                }

                if (button == "Regresar")
                {
                    return RedirectToAction("Index", "Consumo");

                }
                return View("Index");
            }
            catch
            {
                return View(consumo);
            }
        }


        public ActionResult Agregar()
        {
            Consumo consumo = new Consumo();
            ViewBag.idReserva = new SelectList(reservaHabDAO.reservas.Where(g => g.idCliente == consumo.idCliente), "idReserva", "numeroReserva");
            ViewBag.idAmbiente = new SelectList(ambienteDAO.ambientes, "idAmbiente", "nombre");
            ViewBag.idServicio = new SelectList(servicioDAO.servicios, "idServicio", "nombre");
            ViewBag.idSede = new SelectList(sedeDao.sedes, "idSede", "nombre");
            return View(consumo);
        }

        //
        // POST: /ReservaHab/Create

        [HttpPost]
        public ActionResult Agregar(Consumo consumo, string button)
        {
            try
            {
                if (button == "Guardar")
                {
                    var serdat = servicioDAO.datos.Where(g => g.idServicio == consumo.idServicio);
                    foreach (DatoServicio s in serdat)
                    {
                        consumo.datoLlenar.Add(s);
                    }
                    DetallePrecio dp = listaPreciosDAO.DetallesPrecio.Where(g => g.idServicio == consumo.idServicio).First();
                    consumo.monto = dp.precio;
                    consumo.moneda = dp.moneda;
                    consumo.detalleMoneda = ma.getMoneda(consumo.moneda);
                    return View("AgregarDetalles", consumo);
                   // ma.Agregar(consumo);
                  //  ma.SaveChanges();
                }
                return View("Index");
            }
            catch
            {
                return View(consumo);
            }
        }

        [HttpGet]
        public ActionResult AgregarDetalles(Consumo consumo)
        {
            return View(consumo);
        }

        [HttpPost]
        public ActionResult AgregarDetalles(Consumo consumo,String tipo)
        {
            ma.Agregar(consumo);
            ma.SaveChanges();
            return View(consumo);
        }

        public ActionResult Detalle(int idConsumo)
        {
            Consumo consumo = ma.Buscar(idConsumo);
            var con = ma.datosConsumo.Where(g => g.idConsumo == consumo.idConsumo);
            return View(con.ToList());
        }


        [HttpGet]
        public ActionResult Editar(int id)
        {
            Consumo consumo = ma.Buscar(id);
            ViewBag.listSedes = new SelectList(sedeDao.sedes, "idSede", "nombre");
            return View(consumo);
        }


        //POST: /ReservaHab/Edit/5

        [HttpPost]
        public ActionResult Editar(int id, Consumo consumo)
        {
            try
            {
                ma.Editar(consumo);
                return RedirectToAction("Index");
            }
            catch
            {
                return View(consumo);
            }
        }


        public ActionResult Eliminar(int id)
        {
            Consumo consumo = ma.Buscar(id);
            return View(consumo);
        }

        //
        // POST: /Servicio/Delete/5

        [HttpPost]
        public ActionResult Eliminar(int id, Consumo consumo)
        {
            try
            {
                consumo = ma.Buscar(id);
                ma.Anular(consumo);
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }


        [HttpGet]
        public ActionResult BuscarCliente()
        {
            var clientesAux = cliDAO.clientes.Include(a => a.objeTipoDoc).Include(a => a.objEstado).Include(a => a.objTipoCliente);

            clientesAux = clientesAux.OrderByDescending(s => s.apellidoPaterno.ToLower());
            int tamanhoPagina = 5;
            int NumPagina = 1;
            return PartialView("BuscarCliente", clientesAux.ToPagedList(NumPagina, tamanhoPagina));
        }


        //public ActionResult BuscarCliente(PagedList.IPagedList<SoftHotel.Models.Cliente> cliente)
        [HttpPost]
        public ActionResult BuscarCliente(Cliente cliente)
        {
            return Content(cliente.idCliente.ToString());
        }
        
        
        
        
        
        
        
        
        
        
        
        
        /*
        public ActionResult Search(String tipo)
        {
            ViewBag.tipo = tipo;
            return View();
        }

        [HttpPost]
        public ActionResult Search(Consumo consumo)
        {
            return RedirectToAction("Index", consumo);
        }

        //
        // GET: /Asignacion/
        ConsumoDAO ma = new ConsumoDAO();
        private ServicioDAO servicioDAO = new ServicioDAO();

        public ActionResult IndexHab()
        
            {
            List<Consumo> consumos = new List<Consumo>();
       //     consumos = ma.ejecutar_query("H");
            Response.AddHeader("Refresh", "10");
            return View(consumos);
        }

        public ActionResult IndexEvent()
        {
            List<Consumo> consumos = new List<Consumo>();
           // consumos = ma.ejecutar_query("E");
            Response.AddHeader("Refresh", "10");
            return View(consumos);
        }

        //
        // GET: /Asignacion/Details/5

        public ActionResult Details(int id)
        {
         //   Consumo consumo; //= ma.getConsumo(id);
            return View();
        }


        //
        // GET: /Asignacion/Create

        public ActionResult Create(string tipo)
        {
            Consumo consumo = new Consumo();
            consumo.tipo= tipo;
           // ViewBag.idServicio = new SelectList(ma.Servicios, "idServicio", "nombre");
            return View(consumo);
        }

       
        public ActionResult Create2(Consumo consumo)
        {
            consumo.servicio = servicioDAO.Buscar(consumo.idServicio);
            return View(consumo);
        }

        [HttpPost]
        public ActionResult Create2(String tipo, Consumo consumo)
        {
            try
            {
                if (ModelState.IsValid)
                {
                 //   ma.add_consumo(consumo);
                    return RedirectToAction("IndexHab");
                }
                return View("IndexHab");
            }
            catch
            {
                return View(consumo);
            }
        }
        // GET: /Asignacion/Edit/5
 
        public ActionResult Edit(int id)
        {
            Consumo consumo = new Consumo();
          //  consumo = ma.getConsumo(id);
            return View(consumo);
        }

        //
        // POST: /Asignacion/Edit/5

        [HttpPost]
        public ActionResult Edit(int id, Consumo consumo)
        {
            try
            {
              //  ma.editar_consumo(id, consumo);
                return RedirectToAction("Index");
            }
            catch
            {
                return View(consumo);
            }
        }

        //
        // GET: /Asignacion/Delete/5
 
        public ActionResult Delete(int id)
        {
            Consumo consumo = new Consumo();
          //  consumo = ma.getConsumo(id);
            return View(consumo);
        }

        //
        // POST: /Asignacion/Delete/5

        [HttpPost]
        public ActionResult Delete(String id, Consumo consumo)
        {
            try
            {
                // TODO: Add delete logic here
             //   ma.eliminar_consumo(id);
                return RedirectToAction("IndexHab");
            }
            catch
            {
                return View(consumo);
            }
        }*/
    }
}
